import http from '@/utils/x-request';
import Utils from '@/utils';
import config from '@/config';

export default {
  namespaced: true,
  state: {
    pageQuery: null, // 当前页面参数
    scene: null, // 小程序场景值
    clearStoreStorage: true, // 是否需要清除store缓存
    // 上一次访问的页面地址
    isShowOrderButton: false, // 是否显示查看订单按钮
    payCancelTwoVisible: false,
    previousPath: null,
    previousQuery: null,
    groupsInfo: null,
    // 隐私勾选状态
    privacyChecked: false,
    // 是否主动关闭过用户挽留弹窗
    isCancelExitPopup: false,
    // 用户挽留弹窗是否点击过确认按钮
    isConfirmPopup: false,
    // 未支付与挽留弹框状态
    payCancelTwoVisibleAgain: false,
    // 商品数量
    productCount: 1,
    // 默认套餐选中
    comboIndex: 0,
    // 用户挽留弹框配置的优惠数组
    exitPopupList: [],
    // 用户挽留弹框配置的优惠展示过的下标
    exitPopupIndex: 0,
    // 0，初始 1，刚进入投放页；2，展示挽留弹窗口，3，已经访问过挽留页面、或者下单成功了，4，访问过逛逛二级页
    previousStatus: 0,
    // 视频号场景下是否开启/关闭挽留弹框
    popupStatus: true,
    // 动画框移动高度
    animateTop: 0,
    animateCountdownData: null,
    orderCountInfo: {
      orderCount: 0,
      payCount: 0
    },
    orderStatusInfo: {
      unpaidCount: 0, // 待支付数量
      waitingDeliveryCount: 0, // 待发货数量
      waitingReceivedCount: 0, // 待收货数量
      postSaleCount: 0, // 售后中数量
      groupCount: 0, // 拼团数量
      commentCount: 0 // 评价数量
    },
    isTxOline: false
  },
  mutations: {
    SET_DATA: (state, data) => {
      for (const key in data) {
        state[key] = data[key];
      }
    }
  },
  actions: {
    setData({ commit }, data) {
      return new Promise((resolve, reject) => {
        commit('SET_DATA', data);
        resolve();
      });
    },
    // 页面加载之后，向数据团队上报特定消息
    fetchReportViewAttr({ commit }, data) {
      return new Promise((resolve, reject) => {
        // 和气开放平台，不再执行此接口逻辑
        if (config.isOpen) {
          resolve();
        } else {
          try {
            const route = Utils.$getCurrentPage().route;
            const params = {
              ...(data || {}),
              path: route
            };
            for (const key in params) {
              params[key] = String(params[key]);
            }
            http({
              url: '/product/page/viewAttr',
              method: 'post',
              data: data.reportSource ? data : params,
              alarm: true,
              error: false
            }).then((res) => {
              resolve(res);
            }).catch((err) => {
              uni.setStorageSync('storage-view-attr-catch', {
                ...params,
                reportSource: 'catch',
                timestamp: +new Date()
              });
              reject(err);
            });
          } catch (err) {
            reject(err);
          }
        }
      });
    },
    // 重置清空数据
    fetchAppStore({ commit }, data = {}) {
      return new Promise((resolve, reject) => {
        const payload = Object.assign({
          animateTime: 299000,
          animateCountdownData: {},
          clearStoreStorage: true,
          previousPath: null,
          previousQuery: null,
          groupsInfo: null,
          // 优惠弹框是否显示过
          payCancelTwoVisible: false,
          // 是否显示过用户挽留弹框
          payCancelTwoVisibleAgain: false,
          // 是否主动关闭过用户挽留弹窗
          isCancelExitPopup: false,
          // 用户挽留弹窗是否点击过确认按钮
          isConfirmPopup: false,
          // 用户挽留弹框配置的优惠数组
          exitPopupList: [],
          // 用户挽留弹框配置的优惠展示过的下标
          exitPopupIndex: 0,
          // 商品数量
          productCount: 1,
          previousStatus: 0
        }, data);
        commit('SET_DATA', payload);
        resolve();
      });
    }
  }
};
